目標:製作一個人類圖模組
輸入:生日日期時間
輸出:一 2x13(共 26 個數字)的人類圖矩陣
TypeScript auto-accessor 可以參考這個 PR
等待 EMCAScript: proposal-grouped-and-auto-accessors 上線後準備將 setter 列為 private
export class Substructure implements ISubstructure {
// @TODO accessor gate { get; #set; }: number;
accessor gate: number;
accessor line: number;
}
export class Imprint implements IImprint {
accessor sun: Substructure;
accessor earth: Substructure;
accessor moon: Substructure;
accessor northNode: Substructure;
accessor southNode: Substructure;
accessor mercury: Substructure;
accessor venus: Substructure;
accessor mars: Substructure;
accessor jupiter: Substructure;
accessor saturn: Substructure;
accessor uranus: Substructure;
accessor neptune: Substructure;
accessor pluto: Substructure;
}
export class BodyGraph implements IBodyGraph {
accessor personality: Imprint;
accessor design: Imprint;
}
若將 BodyGraph 視為 Value Object,我們可以發現同一出生時辰會得到同一組 BodyGraph,因此有機會透過出生時辰作為鍵值,共用同一組 BodyGraph。
這邊會用到幾個來自 swisseph 的方法:
swe_julday()
:從 UTC 時間轉換為尤利安曆(Julian)時間swe_calc_ut()
:根據尤利安曆時間計算星球位置swe_degnorm()
:標準化角度swe_solcross_ut()
:尋找太陽位於某個角度的尤利安曆時間swe_julday()
取得出生時的尤利安曆時間swe_calc_ut()
計算出生時十三顆星球的位置十三顆星球分別為太陽、地球、月亮、北交點、南交點、水星、金星、火星、木星、土星、天王星、海王星和冥王星
swe_julday()
取得出生時的尤利安曆時間swe_calc_ut()
取得當時的太陽位置swe_degnorm()
將該角度標準化,使其落在 0~360 度之間swe_solcross_ut()
從出生 100 天前開始,計算下一次太陽交叉於前述角度的尤利安曆時間swe_calc_ut()
計算該時間點十三顆星球的位置swe_solcross_ut()
is not a function
swe_solcross_ut()
是後來版本的 Swiss Ephemeris 新加入的方法,目前 NodeJS 的 swisseph 模組並未更新至該版本,導致找不到swe_solcross_ut()
方法。
自行 fork 一個 swisseph 模組,並利用 gyp 重新打包新版的 Swiss Ephemeris。
目前卡在這一步,明天繼續努力...。
晚安,瑪卡巴卡。